package com.atguigu.jxc.dao;

import com.atguigu.jxc.entity.Goods;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @description 商品信息
 */
public interface GoodsDao {


    String getMaxCode();



    /**
     *
     * @param page
     * @param rows
     * @param codeOrName
     * @param goodsTypeId
     */
    List<Goods> pageGoods(
                          @Param("page") Integer page,
                          @Param("rows") Integer rows,
                          @Param("codeOrName") String codeOrName,
                          @Param("goodsTypeId") Integer goodsTypeId);

    /**
     *
     * @param goods
     */
    void save(Goods goods);

    /**
     * 更新商品
     * @param goods
     */
    void update(Goods goods);

    /**
     *
     * @param goodsId
     */
    void delete(@Param("goodsId") Integer goodsId);

    /**
     *
     * @param goodsId
     * @return
     */
    Goods getGoodsById(@Param("goodsId") Integer goodsId);

    /**
     *
     * @param startNum
     * @param rows
     * @param nameOrCode
     * @return
     */
    List<Goods> getNoInventoryQuantity(@Param("startNum") int startNum, @Param("rows") Integer rows, @Param("codeOrName") String nameOrCode);

    /**
     *
     * @param startNum
     * @param rows
     * @param nameOrCode
     * @return
     */
    List<Goods> getHasInventoryQuantity(@Param("startNum") int startNum, @Param("rows") Integer rows, @Param("codeOrName") String nameOrCode);

    /**
     *
     * @param goodsId
     * @param inventoryQuantity
     * @param purchasingPrice
     */
    void saveStock(@Param("goodsId") Integer goodsId, @Param("inventoryQuantity") Integer inventoryQuantity, @Param("purchasingPrice") double purchasingPrice);


    /**
     * 查询库存少于下限的商品
     * @return
     */
    List<Goods> listAlarm();
}
